// 用于登录相关的辅助方法
import CryptoJS from 'crypto-js'

const secertKey = 'accountInfo_secertKey' // 密钥

/**
 * 存储是否记住密码的标识
 * @param {Boolean | Null} flag 
 */
function setRemeber(flag) {
    if(flag === null) {
        localStorage.removeItem('isRemeber')
        return
    }
    localStorage.setItem('isRemeber', flag)
}

/**
 * 获取是否记住密码的标识
 */
function getRemeber() {
    return !!localStorage.getItem('isRemeber')
}

/**
 * 存储账号及加密之后的密码
 * @param {Object | Null} accountInfo // 真实的账号信息
 */
function setAccount(accountInfo) {
    if(accountInfo === null) {
        localStorage.removeItem('accountInfo')
        return
    }
    const encryptAccountInfo = {
        username: accountInfo.username,
        password: CryptoJS.AES.encrypt(accountInfo.password, secertKey).toString()
    }
    localStorage.setItem('accountInfo', JSON.stringify(encryptAccountInfo))
}

/**
 * 获取本地存储的账号及解密之后的密码
 */
function getAccount() {
    const accountInfo = localStorage.getItem('accountInfo')
    if(accountInfo) {
        const parseAccountInfo = JSON.parse(accountInfo)
        const decryptAccountInfo = {
            username: parseAccountInfo.username,
            password: CryptoJS.AES.decrypt(parseAccountInfo.password, secertKey).toString(CryptoJS.enc.Utf8)
        }
        return decryptAccountInfo
    }
    return {}
}

export default {
    setRemeber,
    getRemeber,
    setAccount,
    getAccount
}